#include <iostream>

class Territoire
{
    private:
        int nbDes;
	int nbDesCourant;
        Camp* camp;
        std::vector<int> voisins;

    public:
	/*
	* Ajoute un nombre de des au territoire
	*/
        void ajouterDes(int nbDes);

	/*
	* Retire un nombre de des au territoire
	*/
        void retirerDes(int nbDes);

	/*
	* Change le camp auquel appartient le territoire.
	*/
        void changerCamp(Camp* c);

	/*
	* Deplace un nombre de de de ce territoire a un autre.
	*/
        void deplacement(Territoire* T, int nbDes);

	/*
	* Renvoie vrai si le territoire T appartient au meme camp que ce territoire,
	* faux sinon.
	*/
        bool memeCamp(Territoire* T);

	/*
	* Renvoie vrai si le territoire T est dans la liste de voisins de ce territoire,
	* faux sinon.
	*/
        bool aCote(Territoire* T);

	/*
	* Renvoie vrai si le territoire T est adjacent ET que l'on a plus d'un de 
	* ET qu'il ne nous appartient pas, faux sinon.
	*/
        bool attaquable(Territoire* T);

	/*
	* Renvoie vrai s'il existe un chemin compose uniquement de territoires appartenant au camp jusqu'au territoire T,
	* faux sinon.
	*/
        bool existeChemin(Territoire* T);

	/*
	* Renvoie vrai s'il est possible de faire une action, faux sinon.
	*/
        bool actionPossible();

	/*
	* Getter
	*/
        void setNbDe(int nbD);

	/*
	* Setter
	*/
        int getNbDe();
};
